ntroducción
a la programación
con C
Andrés Marzal
sabel Gracia
Departamento De lenguajes y sistemas informáticos
Codis d’assignatura 04 i G04
Andrés Marzal/sabel Gracia - SBN: 978-84-693-0143-2
ntroducción a la programación con C - UJ
Edita: Publicacions de la Universitat Jaume I. Servei de Comunicació i Publicacions
Campus del Riu Sec. Edifici Rectorat i Serveis Centrals. 12071 Castelló de la Plana
http://www.tenda.uji.es
e-mail:
[email protected]
Col·lecció Sapientia, 29
www.sapientia.uji.es
ISBN: 978-84-693-0143-2
Aquest text està subjecte a una llicència Reconeixement-NoComercial-CompartirIgual de
Creative Commons, que permet copiar, distribuir i comunicar públicament l’obra sempre
que especifique l’autor i el nom de la publicació i sense objectius comercials, i també per-
met crear obres derivades, sempre que siguen distribuïdes amb aquesta mateixa llicència.
http://creativecommons.org/licenses/by-nc-sa/2.5/es/deed.ca
Andrés Marzal/Isabel Gracia - ISBN: 978-84-693-0143-2
II
Introducción a la programación con C - UJI
Andrés Marzal/sabel Gracia - SBN: 978-84-693-0143-2
ntroducción a la programación con C - UJ
Andrés Marzal/sabel Gracia - SBN: 978-84-693-0143-2
V
ntroducción a la programación con C - UJ
Andrés Marzal/sabel Gracia - SBN: 978-84-693-0143-2
V
ntroducción a la programación con C - UJ
Andrés Marzal/sabel Gracia - SBN: 978-84-693-0143-2
V
ntroducción a la programación con C - UJ
Había un libro junto a Alicia, en la mesa; y mientras permanecía sentada
observandoalReyBlanco[...],pasabalashojasparaversiencontrabaalgún
trozoquepoderleer:«... Porqueestátodoenunalenguaquenoentiendo»,
sedijo.
Estabaasí:
JERIGÓNDOR
Cocillabaeldíaylastovasagilimosas
giroscopabanybarrenabanenellarde.
Tododevirablesestabanlosburgovos,
ysilbramabanlasalecasrastas.
Duranteunrato,estuvocontemplandoestoperpleja;peroalfinalseleocurrió
unabrillanteidea.¡Ah,yasé!,¡esunlibrodelEspejo,naturalmente!Silo
pongodelantedeunespejo,laspalabrasseveránotravezdelderecho.
LC,Aliciaatravésdelespejo.
El lenguaje de programación C es uno de los más utilizados (si no el que más) en la
programacióndesistemassoftware.EssimilaraPythonenmuchosaspectosfundamenta-
les:presentalasmismasestructurasdecontrol(seleccióncondicional,iteración),permite
trabajarconalgunostiposdedatossimilares(enteros,flotantes,secuencias),haceposible
definiryusarfunciones,etc.Noobstante,enmuchasotrascuestionesesunlenguajemuy
diferente.
C presenta ciertas características que permiten ejercer un elevado control sobre la
eficienciadelosprogramas,tantoenlavelocidaddeejecucióncomoenelconsumode
memoria, pero a un precio: tenemos que proporcionar información explícita sobre gran
cantidaddedetalles,porloquegeneralmenteresultanprogramasmáslargosycomplica-
dosquesusequivalentesenPython,aumentandoasílaprobabilidaddequecometamos
errores.En este capítulo aprenderemos a realizar programas en C del mismo «nivel» que
los que sabíamos escribir en Python tras estudiar el capítulo 4 del primer volumen.
Aprenderemos,pues,ausarvariables,expresiones,laentrada/salida,funcionesdefinidas
en«módulos»(queenCsedenominanbibliotecas)yestructurasdecontrol.Loúnicoque
dejamospendientedemomentoeseltratamientodecadenasenC,queessensiblemente
diferentealqueproporcionaPython.
Andrés Marzal/sabel Gracia - SBN: 978-84-693-0143-2
1
1
ntroducción a la programación con C - UJ
Nadamejorqueunejemplodeprogramaenlosdoslenguajesparaquetellevesuna
primeraimpresióndecuándiferentessonPythonyC... ycuánsemejantes.Estosdos
programas,elprimeroenPythonyelsegundoenC,calculanelvalorde
=√
parasendosvaloresenterosdeyintroducidosporelusuarioytalesque0≤≤.
frommathimport
Pedirlímitesinferiorysuperior.
int raw input
while 0
print int raw input
int raw input
while
print
int raw input
Calcularelsumatoriodelaraízcuadradadeparaentrey.
0.0
forinrange 1
sqrt
Mostrarelresultado.
print
print
include
include
intmain void
int
float
Pedirlímitesinferiorysuperior.
printf
scanf
while 0
printf
printf
scanf
printf
scanf
while
printf
printf
scanf
Andrés Marzal/sabel Gracia - SBN: 978-84-693-0143-2
IntroducciónalaprogramaciónconC
2
2
ntroducción a la programación con C - UJ
cUJI
Calcularelsumatoriodelaraízcuadradadeparaentrey.
0.0
for
sqrt
Mostrarelresultado.
printf
printf
return0
Envariospuntosdeestecapítuloharemosreferenciaaestosdosprogramas.Nolos
pierdasdevista.
........................................................................
y
·1 Comparalosprogramas
.Analizasussemejanzasy
diferencias. ¿Qué función desempeñan las llaves en
? ¿Qué función crees
quedesempeñanlaslíneas6y7delprogramaC?¿AquéelementodePythonseparecen
lasdosprimeraslíneasde
?¿Quésimilitudesydiferenciasapreciasentre
lasestructurasdecontroldePythonyC?¿Cómocreesqueseinterpretaelbuclefordel
programaC?¿Porquéalgunaslíneasde
finalizanenpuntoycomayotras
no?¿QuédiferenciasvesentreloscomentariosPythonyloscomentariosC?
..................................................................................
PythonyCnosólosediferencianensusintaxis,tambiénsondistintosenelmodoen
quesetraducenlosprogramasacódigodemáquinayenelmodoenqueejecutamoslos
programas.
Pythonesunlenguajeinterpretado:paraejecutarunprogramaPython,suminis-
»)consu
tramosalintérpreteunficherodetexto(típicamenteconextensión«
,porejemplo,hemosdeescribir
códigofuente.Sideseamosejecutar
enlalíneadeórdenesUnix.Comoresultado,elintérprete
va leyendo y ejecutando paso a paso el programa. Para volver a ejecutarlo, has
de volver a escribir
en la línea de órdenes, con lo que
serepiteelprocesocompletodetraducciónyejecuciónpasoapaso.Aunqueno
modifiquemoselcódigofuente,esnecesariointerpretarlo(traduciryejecutarpaso
apaso)nuevamente.
IntérpretePython
Resultados
Cesunlenguajecompilado:antesdeejecutarunprogramaescritopornosotros,
suministramossucódigofuente(enunficheroconextensión«
»)auncompilador
deC.Elcompiladorleeyanalizatodoelprograma.Sielprogramaestácorrec-
tamente escrito según la definición del lenguaje, el compilador genera un nuevo
ficheroconsutraducciónacódigodemáquina,ysino,muestraloserroresqueha
detectado.Paraejecutarelprogramautilizamoselnombredelficherogenerado.Si
nomodificamoselcódigofuente,nohacefaltaquelocompilemosnuevamentepara
3
3
Andrés Marzal/sabel Gracia - SBN: 978-84-693-0143-2
IntroducciónalaprogramaciónconC
ntroducción a la programación con C - UJ
cUJI
Unpocodehistoria
Cyatienesusañitos.ElnacimientodeCestáestrechamentevinculadoaldelsistema
operativoUnix.ElinvestigadorKenThompson,deAT&T,lacompañíatelefónicaesta-
dounidense,sepropusodiseñarunnuevosistemaoperativoaprincipiosdelossetenta.
DisponíadeunPDP-7enelquecodificóunaprimeraversióndeUnixenlenguajeen-
samblador.Prontoseimpusolaconvenienciadedesarrollarelsistemaenunlenguajede
programacióndealtonivel,perolaescasamemoriadelPDP-7(8Kde18bits)hizoque
idearaellenguajedeprogramaciónB,unaversiónreducidadeunlenguajeyaexistente:
BCPL.EllenguajeCapareciócomounBmejorado,frutodelasdemandasimpuestas
poreldesarrollodeUnix.DennisRitchiefueelencargadodeldiseñodellenguajeCy
delaimplementacióndeuncompiladorparaélsobreunPDP-11.
Chasufridonumerososcambiosalolargodesuhistoria.Laprimeraversión«estable»
del lenguaje data de 1978 y se conoce como «K&R C», es decir, «C de Kernighan y
Ritchie».Estaversiónfuedescritaporsusautoresenlaprimeraedicióndellibro«The
CProgrammingLanguage»(unauténtico«best-seller»delainformática).Laadopciónde
Unixcomosistemaoperativodereferenciaenlasuniversidadesenlosaños80popularizó
enormementeellenguajedeprogramaciónC.Noobstante,Ceraatractivoporsímismo
yparecíasatisfacerunademandarealdelosprogramadores:disponerdeunlenguaje
dealtonivelconciertascaracterísticaspropiasdeloslenguajesdebajonivel(deahí
queavecessedigaqueCesunlenguajedenivelintermedio).
La experiencia con lenguajes de programación diseñados con anterioridad, como
LispoPascal,demuestraquecuandoelusodeunlenguajeseextiendeesmuyprobable
que proliferen variedades dialectales y extensiones para aplicaciones muy concretas,
loquedificultaenormementeelintercambiodeprogramasentrediferentesgruposde
programadores.Paraevitaresteproblemasesuelerecurriralacreacióndeuncomité
de expertos que define la versión oficial del lenguaje. El comité ANSI X3J9 (ANSI
son las siglas del American National Standards Institute), creado en 1983, considera
lainclusióndeaquellasextensionesymejorasquejuzgadesuficienteinterésparala
comunidad de programadores. El 14 de diciembre de 1989 se acordó qué era el «C
estándar» y se publicó el documento con la especificación en la primavera de 1990.
El estándar se divulgó con la segunda edición de «The C Programming Language»,
deBrianKernighanyDennisRitchie.UncomitédelaInternationalStandardsOffice
(ISO)ratificóeldocumentodelcomitéANSIen1992,convirtiéndoloasíenunestándar
internacional.DurantemuchotiemposeconocióaestaversióndellenguajecomoANSI-
CparadistinguirlaasídelK&RC.AhoraseprefieredenominaraestavarianteC89(o
C90)paradistinguirladelarevisiónquesepublicóen1999,laqueseconoceporC99
yqueeslaversiónestándardeCqueestudiaremos.
Chatenidoungranimpactoeneldiseñodeotrosmuchoslenguajes.Hasido,por
ejemplo,labaseparadefinirlasintaxisyciertosaspectosdelasemánticadelenguajes
tanpopularescomoJavayC .
volveraejecutarelprograma:bastaconvolveraejecutarelficherogeneradopor
elcompilador.
Para ejecutar
, por ejemplo, primero hemos de usar un compilador
paraproducir
Comentarios de: Introducción a la programación con C (0)
No hay comentarios